package day0728API.time;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class Test1 {
    public static void main(String[] args) {
        //1.System类的静态方法currentTimeMillis();   1970年元旦（1月1日，0点0分0秒 ）到现在时间毫秒值
        long time=System.currentTimeMillis();
        System.out.println(time);

        //2.java.util.Date类
        Date  d=new Date();  //当前时间
        System.out.println(d.toString());//Fri星期  Jul月份   28日期  15:27:24 CST(China Standard Time) 2023年
        System.out.println(d);//会自动调用对象的toString()方法

        //2.1.调用Date类的成员方法可以将Date对象中封装的时间转化为long类型的时间(获取Date对象中封装的long类型的时间)
        long  time2=d.getTime();
        System.out.println(time2);


        //2.2.SimpleDateFormat的对象： 专门用来修改时间格式(对时间进行格式化)
        SimpleDateFormat sdf=new SimpleDateFormat();//23-7-28 下午3:37
        String dStr=sdf.format(d);//调用sdf对象的format方法对时间进行格式化
        System.out.println(dStr);

        //2.3.SimpleDateFormat的对象(自己给构造方法中传入一个时间格式)： 专门用来修改时间格式(对时间进行格式化)
        SimpleDateFormat sd=new SimpleDateFormat("yyyy:MM$dd  hh:mm:ss");
        String d_Str=sd.format(d);
        System.out.println(d_Str);


        //2.4.用SimpleDateFormat的对象将String格式的时间解析为Date对象
        String s="2023:07:28  03:43:57";
        SimpleDateFormat sd_s=new SimpleDateFormat("yyyy:MM:dd  hh:mm:ss");
        //调用sd_s的parse()方法
        try {
            Date date=sd_s.parse(s);
            System.out.println(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }


        //2.5.创建Date对象时传入一个long格式的时间
        Date date2=new Date(1690530604743L);
        System.out.println(date2);



        //3.用Calendar类的静态方法getInstance获取Calendar对象(Calendar抽象类的实现类对象)
        Calendar c=Calendar.getInstance();//3.1.包含的时间信息更多(currentTimeMillis最少，  Date其次， Calendar最多)
        System.out.println(c);

        Calendar c2=new GregorianCalendar();
        System.out.println(c2);

        //3.2.将Calendar中封装的时间毫秒值传入到new  Date()的构造方法中。然后返回Date对象
        Date date3=c2.getTime();//Calendar中封装的时间毫秒转为Date返回
        System.out.println(date3);

        Calendar c3=Calendar.getInstance();
        c3.setTime(new Date());//3.3.修改Calendar表示的时间值为new Date()

        //3.4.Calendar中提供修改时间方法和获取时间方法
        int fdow=c3.getFirstDayOfWeek();
        //返回本周第一天是周几(如果返回1代表周日，返回2代表周一，返回3代表周二，返回7代表周六)
        System.out.println(fdow);

        long millis=c3.getTimeInMillis();
        System.out.println(millis);//毫秒值

        int y=c3.get(Calendar.YEAR);
        int M=c3.get(Calendar.MONTH);
        int date=c3.get(Calendar.DATE);
        System.out.println(y+"--"+M+"--"+date);

        int h=c2.get(Calendar.HOUR);
        int m=c2.get(Calendar.MINUTE);
        int se=c2.get(Calendar.SECOND);
        System.out.println(h+"--"+m+"--"+se);


        int weekDay=c2.get(Calendar.DAY_OF_WEEK);
        System.out.println(weekDay);//从周日开始算(周日是1,周五是6)

        int date4=c2.get(Calendar.DAY_OF_MONTH);
        System.out.println(date4);

        c2.set(Calendar.YEAR,2025);//调用Calendar的set方法修改年分值为2025
        System.out.println(c2.getTime());

        c2.set(Calendar.MONTH,8);//调用Calendar的set方法修改年分值为2025
        System.out.println(c2.getTime());

        c2.set(Calendar.DATE, 30);//调用Calendar的set方法修改年分值为2025
        System.out.println(c2.getTime());


        c2.set(Calendar.HOUR, 17);//调用Calendar的set方法修改年分值为2025
        System.out.println(c2.getTime());

        c2.set(Calendar.MINUTE, 40);//调用Calendar的set方法修改年分值为2025
        System.out.println(c2.getTime());

        c2.set(Calendar.SECOND, 00);//调用Calendar的set方法修改年分值为2025
        System.out.println(c2.getTime());

    }
}
